package cn.gorit.user.controller;

import cn.gorit.common.enums.ResultEnums;
import cn.gorit.common.lang.Result;
import cn.gorit.dto.user.ColDto;
import cn.gorit.entity.user.Collection;
import cn.gorit.user.service.CollectionService;
import cn.gorit.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @version v1.0
 * @Classname CollectionController
 * @TODO 远程 RPC 获取最近信息，添加和取消需要配合正式登录后进行开发
 * @Description 个人收藏查询，属于前台接口
 * @Author Gorit
 * @Created by 2021/3/16 0:29
 * @IDLE IntelliJ IDEA
 **/
@RestController
@RequestMapping("/api/v1/front/col")
public class CollectionController {

    @Autowired
    private CollectionService service;

    // 前台用户添加收藏，会被立即执行
    @PostMapping("/blog/{id}/user/{userId}")
    public Result<Object> addCol(@PathVariable("id") String id, @PathVariable("userId") String useId) {
        return service.add(id,useId);
    }

    // 前台取消收藏，删除数据
    @DeleteMapping("/blog/{id}/user/{userId}")
    public Result<Object> delCol(@PathVariable("id") String id,@PathVariable("userId") String useId) {
        return service.del(id, useId);
    }

    // 查看收藏状态
    @GetMapping("/blog/{blogId}/user/{userId}")
    public Result<Object> getColStatus(@PathVariable("blogId") String blogId,@PathVariable("userId") String useId) {
        return service.queryColStatus(useId, blogId);
    }

    // 获取收藏列表
    @PostMapping("/blog/list/page")
    public Result<Page<ColDto>> getColList(@RequestBody Page<ColDto> page) {
        return service.getByPage(page);
    }

    // 查看收藏信息， 远程调用 content 模块的信息查看接口
    @GetMapping("/blog/detail/{blogId}")
    public Result<Object> getBlogDetail(@PathVariable("blogId") String blogId) {
        return service.getColDetail(blogId);
    }

    // 根据文章ID 查询被收藏了多少次 【前台不给予直接访问，仅测试使用，会直接体现在文章的列表查询中】
    @GetMapping("/blog/count/{blogId}")
    public Result<Integer> getColByBlogId(@PathVariable("blogId") String blogId) {
        return new Result<>(ResultEnums.QUERY_SUCCESS.getCode(),ResultEnums.QUERY_SUCCESS.getMsg(),service.getByBlogId(blogId));
    }
}
